#ifndef __baker_BakeProcessor_h__
#define __baker_BakeProcessor_h__

#include "Prerequire.h"
#include "Array.h"
#include "BakeSample.h"

namespace baker
{
    class IOccluder;
    class ILight;

    /** A processor for illumination-baking
    */
    class BakeProcessor
    {
    public:
        /** Constructor
        */
        BakeProcessor( void );

        /** Destructor
        */
        ~BakeProcessor( void );

        /** Add an Occluder.
        */
        IOccluder * createOccluder( void );

        /** Add a Light.
        */
        ILight * createLight( void );

    private:
        typedef Array<ILight *> LightArray;
        typedef Array<IOccluder *> OccluderArray;
        typedef Array<BakeSample> BakeSampleArray;

    private:
        LightArray      mLights;
        OccluderArray   mOccluders;
        BakeSampleArray mSamples;
    };
}

#endif  // __baker_BakeProcessor_h__
